package com.sright.bcard.content.biz.manager;

import com.sright.bcard.common.service.share.dto.content.*;
import com.sright.bcard.common.service.share.dto.pager.Pager;
import com.sright.bcard.common.service.share.dto.request.CardEditRequest;
import com.sright.bcard.common.service.share.dto.request.EnterpriseCardRequest;
import com.sright.bcard.common.service.share.dto.response.EnterpriseCardDetailResponse;
import com.sright.bcard.common.service.share.dto.response.CardMaterialResponse;
import com.sright.bcard.common.service.share.dto.response.EnterpriseCardResponse;
import com.sright.bcard.content.share.request.CardParamRequest;
import com.sright.bcard.content.share.request.CardSaveParam;
import com.sright.bcard.content.share.request.EnterpriseCardAddParam;
import com.sright.bcard.common.service.share.dto.enterprise.IndustryDTO;

import java.util.List;

/**
 * 名片manager
 */
public interface CardManager {

    /**
     * 获取名片全量信息
     * @param cardDTO
     * @return
     */
    CardFullDTO getCardFullDTO(CardDTO cardDTO);

    /**
     * 创建个人名片
     * @param industryDTO
     * @return
     */
    Boolean addPersonalCard(IndustryDTO industryDTO);

    /**
     * 修改名片(中文)
     * @param cardParamRequest
     * @return
     */
    Boolean cardZh(CardParamRequest cardParamRequest);

    /**
     * 修改名片(英文)
     * @param cardParamRequest
     * @return
     */
    Boolean cardEn(CardParamRequest cardParamRequest);

    /**
     * 添加用户
     * @param enterpriseCardAddParam
     * @return
     */
    Long addCardEnterprise(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 修改用户
     * @param cardSaveParam
     * @return
     */
    Long editCardEnterprise(CardSaveParam cardSaveParam);

    /**
     * 编辑企业名片中文信息
     * @param enterpriseCardAddParam
     * @return
     */
    Boolean editCardEnterpriseZh(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 编辑企业名片英文信息
     * @param enterpriseCardAddParam
     * @return
     */
    Boolean editCardEnterpriseEn(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 编辑个人名片字体颜色
     * @param color
     * @param memberId
     * @return
     */
    Boolean editPersonalCardFontColor(String color, Long memberId);

    /**
     * demo名片1
     * @return
     */
    DemoCardDTO demoCard1();

    /**
     * demo名片2
     * @return
     */
    DemoCardDTO demoCard2();

    /**
     * demo名片3
     * @return
     */
    DemoCardDTO demoCard3();

    /**
     * 企业名片详情信息
     * @param cardId
     * @param userId
     * @return
     */
//    CardInfoDetailDTO enterpriseCardInfoDetail(Long cardId, Long userId);

    /**
     * 企业名片素材详情信息
     * @param cardId
     * @param userId
     * @return
     */
//    List<CardMaterialDetailDTO> enterpriseCardMaterialDetail(Long cardId, Long userId);

    /**
     * 新增企业名片
     * @param enterpriseCardRequest
     * @return
     */
    Long addEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 删除企业名片
     * @param enterpriseCardRequest
     * @return
     */
    Integer deleteEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 名片详情
     * @param userId
     * @param oldPersonalUserId
     * @param oldEnterpriseUserId
     * @return
     */
    CardInfoDetailDTO cardInfoDetail(Long userId, Long oldPersonalUserId, Long oldEnterpriseUserId);

    /**
     * 修改企业名片
     * @param enterpriseCardRequest
     * @return
     */
    Boolean updateEnterpriseCardName(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 企业名片列表
     * @param enterpriseCardRequest
     * @return
     */
    Pager<EnterpriseCardResponse> list(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 名片素材详情
     * @param cardId
     * @return
     */
    List<CardMaterialDetailDTO> cardMaterialDetail(Long cardId);

    /**
     * 删除用户名片企业信息
     * @param cardUserCompanyInfoId
     * @param userId
     * @return
     */
    Boolean deleteUserCompanyInfo(Long cardUserCompanyInfoId, Long userId);

    /**
     * 编辑名片
     * @param cardEditRequest
     * @param adminId
     * @return
     */
    Boolean editCard(CardEditRequest cardEditRequest,Long adminId);

    /**
     * 获取名片素材详情(新)
     * @param cardId
     * @return
     */
    CardMaterialResponse cardMaterialDetailNew(Long cardId);

    /**
     * 编辑企业名片
     * @param enterpriseCardRequest
     * @return
     */
    Boolean editEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 名片详情
     * @param enterpriseCardRequest
     * @return
     */
    EnterpriseCardDetailResponse enterpriseCardDetail(EnterpriseCardRequest enterpriseCardRequest);

    FavoriteCardDTO cardConnectInfo(Long userId, Long oldPersonalUserId, Long oldEnterpriseUserId);
}
